package com.neuedu.corejava.ch5;

/**
 * 
 * @author netboy
 *
 */

public class ReferenceParameter {
	
	public void change(int a){//参数是基本数据类型
		a = 12;
		System.out.println("in method"+a);
	}
	
    public void change(String str){//参数是一个对象类型，引用数据类型
	str = "in method";
	System.out.println("str");
	}
	
    public void change(int[] array){//数组是一个引用数据类型
    	array[0] = 9;//修改数组内部的数据会影响实参的调用,没有对数组查询赋值，
    	for (int i : array) {
    		System.out.print(i+"\t");
		}
    	System.out.println();
    	}
    
    public void change2(int[] array){//数组是一个引用数据类型
    	array= new int[] {2,3,4,5};//修改数组的引用，重新对数组进行赋值操作.方法内部的修改不会影响到方法外部
    	for (int i : array) {
    		System.out.print(i+"\t");
		}
    	System.out.println();
    	}
    
    
	public static void main(String[] args) {
		
		ReferenceParameter rp = new ReferenceParameter();
		
		//1.基本数据类型
		int a = 10;
		rp.change(a);//传值调用，传递的参数是参数的数据值
		System.out.println("after change"+a);
		
		String str = "Hello 引用数据类型";
		rp.change(str);//传引用调用，传递的参数是一个引用数据类型；
		System.out.println("after change"+str);
		
		int[] array = new int[] {1,2,3,4,5,6};
		rp.change(array);
		for (int k: array) {
			System.out.print(k+"\t");			
		}
		System.out.println();
		
	}

}
